<?php

namespace App\Http\Controllers;

class TestController extends Controller
{
	function testOne(){

		http://laravel_7_zj.test/api/test/testOne

		$this->getLngLatDataByAddress();
		die;
		$user1 = new UserOne();

		$user2 = $user1;
		$user3 = clone $user1;

		echo "<pre>";
		var_dump($user2);
		var_dump($user3);


		$user5 = new UserTwo();
		$user6 = clone $user5;
		$user5->username = 'lisi';
		
		$user5->people->age = 22;
		echo '-$user5->username------'.$user5->username.PHP_EOL;
		echo '-$user5->people->age---'.$user5->people->age.PHP_EOL;
		echo '-$user6->username------'.$user6->username.PHP_EOL;
		echo '-$user6->people->age---'.$user6->people->age.PHP_EOL;


		echo "---";

	}



	/**
	* 高德 根据地址获取经纬度
	*/

	function getLngLatDataByAddress(){
		echo "<pre>";
		// $sql = "select address,sid,sname,status from alp_shop where mid = 72";
		// $addreData = $this->em->getConnection()->fetchAll($sql);


		// $addreDataJson = json_encode($addreData);
		// echo '-$addreDataJson-'.$addreDataJson;
		echo "<br/>";
		die;


		foreach ($addreData as $key=>&$addre) {
			// wait for 1 seconds
			// usleep(1000000);
			$oneSeconds = 1000000;
			$banSeconds = $oneSeconds/2;
			// wait for 0.5 seconds
			usleep($banSeconds);

			// $url="http://restapi.amap.com/v3/geocode/geo?key=e02b3da2445ee4cd8d30a21800794b2&address={$addre['address']}";
			$url="http://restapi.amap.com/v3/geocode/geo?key=e9e551e7965ab959b0a21383844cc3f3f&address={$addre['address']}";
			
			$arr=file_get_contents($url);
			$newarr=json_decode($arr,true);
			$num = $key+1;
			$time = date("Y-m-d H:i:s",time() );
			echo '-地-'.$num.'-个-时间-'.$time.'-url-'.$url;
			echo "<br/>";
			var_dump( '-$newarr-',$newarr);
			echo "<br/>";

			if(isset($newarr['geocodes']) && count($newarr['geocodes'])>0){
				$location = $newarr['geocodes'][0]['location'];
				$arr = explode(',', $location);
				$addre['glng'] = $arr['0'];
				$addre['glat'] = $arr['1'];

			}else{
				// var_dump( '-$url-',$url,'-$newarr-',$newarr);
				// echo "<br/>";
			}
		}
		unset($addre);

		var_dump( );
		echo "<br/>";


	}


	/**
	 * sqlServer
	 */
	function getMssqlServer2010Data(){

		/*
		
		https://www.jb51.net/article/79226.htm
		https://www.cnblogs.com/roluce/p/6033544.html
		https://www.cnblogs.com/westsoft/p/9249992.html
		https://www.jb51.net/article/31016.htm



		 */
		// 数据库地址
		$host = '127.0.0.1';
		// 端口号
		$port = '3306';
		$config = [
			"pos_database"=>"数据库名称",
			"pos_host"=>"{$host}:{$port}",
			"pos_password"=>"数据库登录密码",
			"pos_user_name"=>"数据库登录用户名"
		];
		/*
			编码常用的是utf8-general-ci
			不只是表要统一，要统一的总共有四处
			一是：数据库类型，其中包括，数据库，表，字段三处都要统一，可以检查一下
			二是：文件的编码类型，你若用dw或editplus可以查看页面编码，不同需修改
			三是：访问数据库时的设置既set NAMES utf8;
			四是：浏览器显示方式，添加meta属性<meta charset=utf-8>
			不管用GBK,GB2312,这四处必须统一,看你缺少了哪一步
			找到php.ini把其中的改成下边就可以了
			mssql.charset = "GBK"

			mssql默认使用GB2312编码，而php使用UTF-8，能Google到的解决方案很少，但是却很简单：
				1、执行sql语句前，使用$sql=iconv('utf-8','GB2312//IGNORE',$sql)转换一个$sql的编码就ok了；
				2、对于取出来的中文字段值，要使用$field=iconv('GB2312','utf-8',$field)转换。

			当用mssql存储数据采用 nchar 或 nvarchar  存储时 ， 由于nchar 或 nvarcha 不支持 UCS-2 ( 即 SQLServer 不会按照 UTF-8 格式存储)
			https://www.cnblogs.com/glory-jzx/p/6121466.html
				导致PHP 获取后会出现乱码 具体表现为：  汉字会变成???? 这种
				而且没有提供类似 mysql_query("set charset utf8"); 这种方法。
				解决方案：
					1、直接修改 php.ini文件 ，直接修改 mssql.charset 为 mssql.charset = "UTF-8"
					2、也可以通过 ini_set('mssql.charset', 'UTF-8'); 
				注意 utf-8 选项是大小写敏感的哦。


		*/

		$connObj =@mssql_connect($config['pos_host'],$config['pos_user_name'],$config['pos_password']);
		if($connObj === false){
			print_r( mssql_errors(), true);
			echo '连接失败';
			exit;
		}
		// 选择要连接的数据库
		mssql_select_db($config['pos_database'],$connObj);

		$tbnameInsert = "insert into tbname(username) values ('nv')";
		mssql_query($tbnameInsert,$connObj); 

		$sqlSelect = 'update tbname set   username = "nv小火子" where id = 1  ';
		// 字符编码 转码
		$sqlSelect = iconv("utf-8","gbk",$sqlSelect);
		$inpayRow =@mssql_query($sqlSelect,$connObj);
		echo "<pre>";

		var_dump('-----',$inpayRow);

		$num = mssql_num_rows($inpayRow);
		echo '有'.$num."条记录<br>";
		var_dump('--num---',$num);







		$sqlSelect = 'select * from tbname where username = "nv小火子"  ';
		// $sqlSelect = iconv("utf-8","gbk",$sqlSelect);
		$inpayRow =@mssql_query($sqlSelect,$conn);
		echo "<pre>";
		echo "<br/>";
		echo "-sql-".$sqlSelect;
		echo "<br/>";
		var_dump('---inpayRowd-==-',$inpayRow);
		$num = mssql_num_rows($inpayRow);
		var_dump('--num---',$num);

		while($rows =mssql_fetch_row($inpayRow))
		{
		/*
			mssql_fetch_row()，和用mssql_fetch_array()加上第二个可选参数 MYSQL_NUM 完全相同。
			从和指定的结果标识关联的结果集中取得一行数据并作为数组返回。
			每个结果的列储存在一个数组的单元中，偏移量从 0 开始。
			注意，这里是从0开始偏移，不能用key值(字段名)来取值，只能用索引来取值。因此，这里使用$row['key值']无法取到值
		*/
		    var_dump('--rows---',$rows);
		}


		while($rows =mssql_fetch_assoc($inpayRow))
		{
		/*
			mssql_fetch_assoc() 和用mssql_fetch_array()加上第二个可选参数 MYSQL_ASSOC 完全相同。
			它仅仅返回关联数组。这也是 mssql_fetch_array()起初始的工作方式。
			因此用$row[索引值]无法取到值
		*/
			// 中文乱码转码
			$rows['username'] = iconv("gbk","utf-8",$rows['username']);
		    var_dump('--rows---',$rows);
		}



		while($rows =mssql_fetch_array($inpayRow))
		{
		/*
			mssql_fetch_array()，是mssql_fetch_row()的扩展版本。除了将数据以数字索引方式储存在数组中之外，还可以将数据作为关联索引储存，用字段名作为键名。 因此这里使用$row['key值']和$row[索引值]皆可以取到值。

			mssql_fetch_array() 中第二个参数result_type (这是一个常量)为可选参数，取值范围为：MYSQL_ASSOC ，MYSQL_NUM 和 MYSQL_BOTH 。其中：
			mssql_fetch_array($inpayRow, MYSQL_ASSOC) == mssql_fetch_assoc($inpayRow);
			mssql_fetch_array($inpayRow, MYSQL_NUM) == mssql_fetch_row($inpayRow);
			所以mssql_fetch_array()函数在某种程度上可以算是mssql_fetch_row()与 mssql_fetch_assoc ()的集合。
			因此，mssql_fetch_array()另外还有MYSQL_BOTH参数，将得到一个同时包含关 联和数字索引的数组。


		 */
			// 中文乱码转码
			$rows['username'] = iconv("gbk","utf-8",$rows['username']);
		    var_dump('--rows---',$rows);
		}


		while($row=mssql_fetch_object($inpayRow))
		{
		/*
			mysql_fetch_object() 和 mssql_fetch_array类似，只有一点区别，即返回一个对象而不是数组，并将字段名字做为属性。间接地也意味着只能通过字段名来访问，而不是偏移量。
		*/
			// 中文乱码转码
			$row->username = iconv("gbk","utf-8",$row->username);
			var_dump('--row---',$row);
		}











		// 释放记录集    
		mssql_free_result($inpayRow);
		// 关闭连接  
		mssql_close($connObj);

		die;
	}

	/**
	 * sqlServer
	 */
	function getMssqlServer2008Data(){
		/*
		https://zhidao.baidu.com/question/2080920956960678348.html

		*
		*/

		//数据库服务器地址
		$serverName = 'localhost';
		// 数据库用户名
		$uid = 'root';
		// 数据库密码
		$pwd = '123456';
		// 数据库名称
		$databasename = 'ceshi123';

		$connectionInfo = ['UID'=>$uid,'PWD'=>$pwd,'Database'=>$databasename];

		$connObj = sqlsrv_connect( $serverName ,$connectionInfo);
		if($connObj === false){
			echo "连接数据库失败！";
			print_r( sqlsrv_errors(),true);
			die;
		}
		$sqlSelect = "select * from user";
		$query = sqlsrv_query($connObj,$sqlSelect,[],['Scrollable'=> SQLSRV_CURSOR_KEYSET ]);
		$numRows = sqlsrv_num_rows($query);
		if($numRows >0){
			while ($row = sqlsrv_fetch_array($query) ) {
				var_dump($$row );
			}
		}





	}
}

class UserOne{
  public $username = 'test';
  public function __clone(){
    $this->username = '__clone www';
  }
}

class People {
  public $age = 18;
}
class UserTwo {
  public $username = 'zhangsan';
  public $peple = null;
  public function __construct() {
    $this->people = new People();
  }
}
